package com.zhu.pre.mapper;

import com.sanploy.common.domain.Order;
import com.sanploy.common.domain.OrderItem;
import com.sanploy.common.domain.vo.OrderListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by zhu yingzhi on 2017/9/29.
 * @author yingzhi zhu
 * 手机订单数据库操作接口
 */
@Mapper
public interface MOrderMapper {
    /**
     * 添加订单
     * @param order 订单实体对象
     * @return 数据库影响行数
     */
    int insertOrder(Order order);

    /**
     * 通过id查找用户的订单详情
     * @param order_id 订单id
     * @param user_id 用户id
     * @return 订单VO 对象
     */
    OrderListVo findOrderById(@Param("order_id") String order_id, @Param("user_id") Long user_id);

    /**
     * 批量添加订单里面的商品
     * @param list 订单商品list
     * @return 数据库影响行数
     */
    int insertOrderItem(List<OrderItem> list);

    /**
     * 更新订单的状态
     * @param order_id 订单id
     * @param order_status 订单状态
     * @param user_id 用户id
     * @return 数据库影响行数
     */
    int updateOrderStatus(@Param("order_id") String order_id, @Param("order_status") String order_status, @Param("user_id") Long user_id);

    /**
     * 取消订单
     * @param order_id  订单id
     * @param order_status 订单状态
     * @param cancel_time 取消时间
     * @param user_id 用户id
     * @param before_status 之前状态
     * @return 数据库影响行数
     */
    int cancerOrder(@Param("order_id") String order_id, @Param("order_status") String order_status,
                    @Param("cancel_time") String cancel_time, @Param("user_id") Long user_id, @Param("before_status") String before_status);

    /**
     * 订单确认
     * @param order_id 订单id
     * @param order_status 订单状态
     * @param confirm_time 确认时间
     * @param user_id 用户id
     * @param before_status 之前状态
     * @return 数据库影响行数
     */
    int confirmOrder(@Param("order_id") String order_id, @Param("order_status") String order_status,
                     @Param("confirm_time") String confirm_time, @Param("user_id") Long user_id, @Param("before_status") String before_status);

    /**
     * 订单支付状态修改
     * @param order_id 订单id
     * @param pay_status 支付状态
     * @param user_id 用户id
     * @return 数据库影响行数
     */
    int updatePayStatus(@Param("order_id") String order_id, @Param("pay_status") String pay_status, @Param("user_id") Long user_id);

    /**
     * 查找订单里面
     * @param user_id 用户id
     * @param status 状态
     * @return 订单VO 集合
     */
    List<OrderListVo> findOrderItem(@Param("user_id") Long user_id, @Param("status") String status);

}
